;(defvar x 100)
(setf x 100)

(defun fun1 (x)
  (progn
    (setf x 5)
    (fun2)
    (print x)))

(defun fun2 ()
  (setf x 500))

(defun fun3 (x)
  (progn
    ;(defvar x 100)
    (print x)))



(defun fun4 ()
  (print x))

(let ((x 50))
  (progn
    (print x)
    (fun4)
    ;(fun3)
    (fun2)
    (print x)))

(print x)


;; (setq x 3)
;; (defun foo () (print x))
;; (let ((x 4)) (foo)) 